/*!
  \file
  Implementation of FFT for HHVolumeSimple (uses FFTW)
*/

#ifndef FFT_IMAGE_HHV_SIMPLE_HPP
#define FFT_IMAGE_HHV_SIMPLE_HPP

#include "fftimage.hpp"
#include "hhvsimple.hpp"

class FFTimageSimple : public FFTimage {
public:
  //! Forward transform interface
  virtual void Forward( SciGPU::HHV::HHVolume< std::complex<float>,2>& dst,
                        const SciGPU::HHV::HHVolume<float,2>& src ) const;

  //! Inverse transform interface
  virtual void Inverse( SciGPU::HHV::HHVolume<float,2>& dst,
                        const SciGPU::HHV::HHVolume< std::complex<float>,2>& src ) const;
private:
  void ForwardTransform( SciGPU::HHV::HHVolumeSimple< std::complex<float>,2>& dst,
                         const SciGPU::HHV::HHVolumeSimple<float,2>& src ) const;

  void InverseTransform( SciGPU::HHV::HHVolumeSimple<float,2>& dst,
                        const SciGPU::HHV::HHVolumeSimple< std::complex<float>,2>& src ) const;
};


#endif
